
package com.hlkj.pay.service.merchant;
/*
 * Hlpay-Plus aggregate payment system.
 * Copyright (c) 2024-2025 Hlpay Team Copyright has the right of final interpretation.
 */

import com.hlkj.framework.common.pojo.PageResult;
import com.hlkj.pay.dto.merchant.access.MerchantAccessAuthQueryDto;
import com.hlkj.pay.enums.PayEnums;
import com.hlkj.pay.infrastructure.model.merchant.MerchantAccessAuthDO;

import java.util.List;

/**
 * @author HlpayTeam
 * @date 2024/09/25 13:33
 */
public interface IMerchantAccessAuthService {


    void addMerchantAccessAuth(List<MerchantAccessAuthDO> merchantAccessAuthList);

    /**
     *
     * @param merchantAccessAuthList
     */
    void saveMerchantAccessAuth(List<MerchantAccessAuthDO> merchantAccessAuthList);
    /**
     *
     * @param merchantAccessAuth
     */
    void saveMerchantAccessAuth(MerchantAccessAuthDO merchantAccessAuth);

    /**
     *
     * @param merchantAccessAuthList
     */
    void saveMerchantAccessAuth(List<MerchantAccessAuthDO> merchantAccessAuthList, List<MerchantAccessAuthDO> merchantAccessAuthDbList);

    /**
     *
     * @param accessId
     * @return
     */
    List<MerchantAccessAuthDO> queryMerchantAccessAuth(Long accessId);

    /**
     *
     * @param accessId
     * @return
     */
    List<MerchantAccessAuthDO> queryMerchantAccessAuth(Long accessId, PayEnums.PAY_TYPE type);
    /**
     *
     * @param accessId
     * @return
     */
    MerchantAccessAuthDO routerAccessAuth(Long accessId, PayEnums.PAY_TYPE type);

    List<MerchantAccessAuthDO> routerAccessAuthList(Long accessId, PayEnums.PAY_TYPE type,Integer status,Integer limitRouter);

    /**
     *
     * @return
     */
    MerchantAccessAuthDO queryMerchantAccessAuthById(Long id);
    /**
     *
     * @return
     */
    MerchantAccessAuthDO queryMerchantAccessAuthByCode(String code);

    /**
     *
     * @param merchantAccessAuthList
     */
    void updateMerchantAccessAuthList(List<MerchantAccessAuthDO> merchantAccessAuthList);


    PageResult<MerchantAccessAuthDO> queryAuthPage(MerchantAccessAuthQueryDto merchantAccessAuthQueryDto);


    List<MerchantAccessAuthDO> queryAuthList(MerchantAccessAuthQueryDto merchantAccessAuthQueryDto);

    /**
     *
     * @param updateMerchantAppChannelDO
     */
    void updateMerchantAccessAuth(MerchantAccessAuthDO updateMerchantAppChannelDO);

    /**
     *
     * @param id
     */
    void delAuth(Long id);

    MerchantAccessAuthDO queryMerchantAccessAuth(MerchantAccessAuthDO authDO);
}
